#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
#include <time.h>
#include <unistd.h>
//#include <sprintf.h>
#include "drm_plane_drv.h"

struct plane_arg plane[10];

int main(int argc, char **argv)
{
    char test[1920*720*3];
    setvbuf(stdout,NULL,_IOLBF,0);
//打印drm分层信息。包括层id以及对应层支持的显示格式。
// crtc id : 38 
// Planes:
// id	crtc	fb	CRTC x,y	x,y	gamma size	possible crtcs
// 33	0	0	0,0		0,0	0       	0x00000001
//   formats: NV12
// 34	0	0	0,0		0,0	0       	0x00000001
//   formats: NV12
// 35	0	0	0,0		0,0	0       	0x00000001
//   formats: NV12
// 36	0	0	0,0		0,0	0       	0x00000001
//   formats: BG24
// 37	38	48	0,0		0,0	0       	0x00000001
//   formats: RG24
    drm_print();
// init crtc id;
    drm_crtc_id_init();
//设置drm分层的透明度属性。
    drm_alpha_init();

//    init_plane(&plane[0],34,40,1280,720,0,0,DRM_FORMAT_NV12);

//初始化plane[0]，绑定drm显示plane id：33,crtc id：38，plane层大小为1280x720，plane层位置为0，0.plane层格式为DRM_FORMAT_NV12
    init_plane(&plane[0],33,1280,720,0,0,DRM_FORMAT_NV12);
//    init_plane(&plane[1],36,480,360,0,0,DRM_FORMAT_RGB888);
//    init_plane(&plane[1],37,480,360,0,0,DRM_FORMAT_RGB888);
//    init_plane(&plane[2],38,480,360,0,0,DRM_FORMAT_RGBA8888);
    sleep(2);
//每次重新设置plane属性（显示大小，位置等信息），都需要重新init plane。
    plane_destroy(&plane[0]);
    sleep(3);
    init_plane(&plane[0],33,480,360,360,0,DRM_FORMAT_NV12);

    memset(test,0xff,1920*720*3);
//更新plane[0]的显存空间。
    plane_cpy(&plane[0],test);

    while(1){
        sleep(1);
    }
    return 0;
}
